<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 题目分析：
        // 忽略大小写
        // 空字符串也是回文字符串
        // 只包含字母 数字
        // 测试用例里面有符号 我们要把他忽略
        var isPalindrome = function (s) {
            // 1. 空字符串
            if (s === '') {
                return true
            }
            // 2. 全部转化为大写
            s = s.toLowerCase()
            // 3. 只包含字母 数字
            // 4. 双指针 一个从0 一个从最后一位 界限是不能相等
            let left = 0
            let right = s.length - 1
            while (left < right) {
                debugger
                if (!isLetterOrDigit(s.charCodeAt(left))) {
                    left++
                } else if (!isLetterOrDigit(s.charCodeAt(right))) {
                    right--
                } else if (s[left] !== s[right]) {
                    return false
                } else if (s[left] === s[right]) {
                    left++
                    right--
                }
            }
            return true
        }

        function isLetterOrDigit(code) {
            debugger
            if (
                (code >= 97 && code <= 122) ||
                (code >= 65 && code <= 90) ||
                (code >= 48 && code <= 57)) {
                return true
            } else {
                return false
            }
        }
        // console.log(isPalindrome("A man, a plan, a canal: Panama"));
        console.log(isPalindrome("race a car"));
    </script>
</body>

</html>